#include"headfile.h"


void function(int num)
{
    char op[7];
    switch(num)
    {
        case login_num: //登陆功能
        {
lo_gin:     system("clear");
            _menu(login_num);
re_enter:   printf("请选择你要进行的操作:");
            memset(op,0,7);
            scanf("%s",op);
            if(0 == strcmp(op,"登陆")) //op输入的是登陆则进行登陆
            {
                char id[N] = {0};
id_enter:       printf("请输入id号 若输入返回则返回到菜单:");
                memset(id,0,N);
                scanf("%s",id);

                //id输入的是“返回”则进行返回到上一步
                if(0 == strcmp(id,"返回")) //id输入的是返回
                    goto lo_gin;
                
                if(0 != strcmp(id,"0")) //id输入的不是0,判断输入的是不是其他奇奇怪怪的字符,如果是则重新进行输入
                {
                    if(0 == atoi(id))
                    {
                        printf("id号输入有误,");
                        goto id_enter;
                    }
                    if(-1 == login(id))
                        goto id_enter;
                }
                else if(-1 == login(id))
                    goto id_enter; 
                
            }
            else if(0 == strcmp(op,"退出")) //op输入的是退出则结束这个进程
                exit(0);
            else
            {
                printf("您的输入的操作有误,");
                goto re_enter; //输入的不是“登陆”和“退出”，goto到re_enter重新进行输入
            }
        }
        break;

        case admin_num: //管理员功能
        {
            printf("管理员用户%s登陆成功!\n",name_login);
admin:      _menu(admin_num);
            memset(op,0,N);
            scanf("%s%*c",op);
            if(0 == strcmp(op,"查询")) //op输入的是“查询”则进行查询操作
            {
                if(0 == inquire(admin_num)) 
                {
                    system("clear");
                    goto admin;
                }
            }
            else if(0 == strcmp(op,"添加")) //op输入的是“添加”则进行添加操作
            {
                add();
                system("clear");
                goto admin;
            }
            else if(0 == strcmp(op,"删除")) //op输入的是“删除”则进行删除操作
            {
                if(-1 == del())
                    sleep(1);
                system("clear");
                goto admin;
            }
            else if(0 == strcmp(op,"修改")) //op输入的是“修改”则进行修改操作
            {
                char id[N]; 
ob:             printf("请输入您要修改的对象 指定id/返回:");
                scanf("%s%*c",id);
                if(0 == strcmp("返回",id))
                {
                    system("clear");
                    goto admin;
                }
                else
                {
                    if(0 == strcmp(id_login,id))
                    {
                        char parameter[N];
para_admin:             printf("请输入您要修改的参数 姓名/密码/返回:");
                        memset(parameter,0,N);
                        scanf("%s%*c",parameter);
                        if(0 == strcmp(parameter,"返回"))
                            goto ob;
                        else if(0 == strcmp(parameter,"姓名") || 0 == strcmp(parameter,"密码"))
                        {
                            if(0 == modify(parameter,id))
                                goto para_admin;
                        }
                        else
                        {
                            printf("您输入的参数有问题,");
                                goto para_admin;
                        }
                    }
                    else if(true == _isExist(atoi(id)))
                    {
                        char parameter[N];
para_mem:               printf("请输入您要修改的参数 姓名/性别/年龄/密码/返回:");
                        memset(parameter,0,N);
                        scanf("%s%*c",parameter);
                        if(0 == strcmp(parameter,"返回"))
                            goto ob;
                        else if(0 == strcmp(parameter,"姓名") || 0 == strcmp(parameter,"密码") ||
                                0 == strcmp(parameter,"性别") || 0 == strcmp(parameter,"年龄"))
                        {
                            if(0 == modify(parameter,id))
                                goto para_mem;
                        }
                        else
                        {
                            printf("您输入的参数有问题,");
                                goto para_mem;
                        }
                    }
                    else
                    {
                        printf("id号:%s不存在!\n",id);
                        goto ob;
                    }
                }
                return ;
            }
            else if(0 == strcmp(op,"返回")) //op输入的是“返回”则返回登陆界面菜单
                return ;
            else
            {
                system("clear");
                printf("您输入的操作有误，请重新进行输入！\n");
                goto admin;
            }
        }
        break;

        case stu_num: //学生用户功能
        {
            printf("学生用户%s登陆成功!\n",name_login);
stu:        _menu(stu_num);
            memset(op,0,7);
            scanf("%s%*c",op);
            if(0 == strcmp(op,"查询")) //op输入的是“查询”则进行查询操作
            {
                if(0 == inquire(stu_num)) //inquire()返回0 用户goto可重新选择操作
                {
                    system("clear");
                    goto stu;
                }
            }
            else if(0 == strcmp(op,"修改")) //op输入的是“修改”则进行修改操作
            {
                char parameter[N];
para_stu:       printf("请输入您要修改的参数 姓名/密码/性别/年龄/返回:");
                memset(parameter,0,N);
                scanf("%s%*c",parameter);
                if(0 == strcmp(parameter,"返回"))
                {
                    system("clear");
                    goto stu;
                }
                if(0 == modify(parameter,id_login))
                    goto para_stu;
                return ;
            }
            else if(0 == strcmp(op,"返回")) //op输入的是“返回”则返回登陆界面菜单
                return ;
            else
            {
                system("clear");
                printf("您输入的操作有误，请重新进行输入！\n");
                goto stu;
            }
        }
        break;
    }
}
